﻿<%@ WebHandler Language="C#" Class="Assesment.Web.AjaxHandler.Administration.Catalog.LevelCompetencyhandler" %>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;

using SIPO.Library.DataAccess.Administration;
using SIPO.Library.DomainObject.Administration;
using Assesment.Library.DataAccess.Administration.Catalog;
using SIPO.Library.DomainObject.Administration.Catalog;

using Assesment.Library.Enum;
using Assesment.Web.Support;

using Newtonsoft.Json.Linq;

namespace Assesment.Web.AjaxHandler.Administration.Catalog
{

    public class LevelCompetencyhandler : Assesment.Web.BaseHandler
    {

        private LevelCompetencyRepo LevelCompetencyDal = new LevelCompetencyRepo(ConfigurationManager.ConnectionStrings["SIPOConn"].ConnectionString);

        private recLogRepo logDal = new recLogRepo(ConfigurationManager.ConnectionStrings["SIPOConn"].ConnectionString);
        private string MethodName = string.Empty;

        public override void ProcessRequest(HttpContext context)
        {
            base.ProcessRequest(context);

            MethodName = context.Request.Params["method"];

            context.Response.Clear();
            context.Response.Buffer = true;

            System.IO.StreamReader sr = new System.IO.StreamReader(context.Request.InputStream);

            string jsonString = string.Empty;            
            jsonString = context.Server.UrlDecode(sr.ReadToEnd());
            JObject jObj = string.IsNullOrEmpty(jsonString) ? null : JObject.Parse(jsonString);

            sr.Close();
            sr.Dispose();
            
            switch (MethodName.ToLower())
            {
                case ("insert"):
                    context.Response.Write(Insert(context, jObj));
                    break;
                case ("update"):
                    context.Response.Write(Update(context, jObj));
                    break;
                case ("delete"):
                    context.Response.Write(Delete(context, jObj));
                    break;
                case ("getdata"):
                    context.Response.Write(GetData(context));
                    break;

                default:
                    // do nothing
                    break;
            }

            context.Response.Flush();
            context.Response.End();
        }

        public override bool IsReusable
        {
            get
            {
                return false;
            }
        }

        private string Insert(HttpContext context, JObject jo)
        {
            JSONHelper helper = new JSONHelper();
            
            try
            {
                bool rowstatus = false;
                if ((string)jo["RowStatus"] == "1")
                    rowstatus = true;
                else
                    rowstatus = false;
                
                    LevelCompetency obj = new LevelCompetency();
                    obj.CompetencyID = (int)jo["CompetencyID"];
                    obj.Level = (short)jo["Level"];
                    obj.Definition = (string)jo["Definition"];
                    obj.CreatedDate = DateTime.Now;
                    obj.CreatedBy = base.UserLoggedIn;

                    LevelCompetencyDal.Save(obj);

                    helper.Message = "Data berhasil di simpan !";
                    helper.IsSuccess = true;
                
            }
            catch (Exception ex)
            {
                //if (ex.Message.Contains("UI_LevelCompetency"))
                //{
                //    helper.Message = "Data dengan Kode Kota : " + (string)jo["CityCode"]+ " sudah ada !";
                //    helper.IsSuccess = false; 
                //}
                //else
                //{
                    helper.Message = ex.Message;
                    helper.IsSuccess = false;
                //}
            }
            finally
            {
                recLog log = new recLog();
                log.LogEvent = "Insert";
                log.LogMessage = helper.Message;
                log.LogSource = "LevelCompetencyhandler.ashx";
                log.CreatedBy = base.UserLoggedIn;
                log.CreatedDate = DateTime.Now;
                logDal.Save(log);

            }

            return Newtonsoft.Json.JsonConvert.SerializeObject(helper);

        }

        private string Update(HttpContext context, JObject jo)
        {
            JSONHelper helper = new JSONHelper();
            
            //try
            //{
            //    bool rowstatus = false;
            //    if ((string)jo["RowStatus"] == "1")
            //        rowstatus = true;
            //    else
            //        rowstatus = false;
                
            //    LevelCompetency obj = new LevelCompetency();
            //    obj.ComptID = (int)jo["ComptID"];
            //    obj.RowStatus = rowstatus;
            //    obj.CompetncyDesc = (string)jo["LevelCompetencyDesc"];
            //    obj.Definition = (string)jo["Definition"];
            //    obj.UpdatedDate = DateTime.Now;
            //    obj.UpdatedBy = base.UserLoggedIn;

            //    LevelCompetencyDal.Update(obj);

            //    helper.Message = "Data berhasil di ubah !";
            //    helper.IsSuccess = true;
            //}
            //catch (Exception ex)
            //{
            //    helper.IsSuccess = false;
            //    helper.Message = ex.Message;
            //}
            //finally
            //{
            //    recLog log = new recLog();
            //    log.LogEvent = "Update";
            //    log.LogMessage = helper.Message;
            //    log.LogSource = "LevelCompetencyhandler.ashx";
            //    log.CreatedBy = base.UserLoggedIn;
            //    log.CreatedDate = DateTime.Now;
            //    logDal.Save(log);
            //}

            return Newtonsoft.Json.JsonConvert.SerializeObject(helper);

        }

        private string Delete(HttpContext context, JObject jo)
        {
            JSONHelper helper = new JSONHelper();
            
            try
            {
                var strId = (string)jo["ID"];
                
                string[] ids = strId.Split(',');
                foreach (string id in ids)
                {
                    int intID = Convert.ToInt32(id);                   
                    LevelCompetencyDal.Delete(intID);
                }

                helper.IsSuccess = true;                
                helper.Message = "Data berhasil di hapus !";                
            }
            catch (Exception ex)
            {
                helper.IsSuccess = false;
                helper.Message = ex.Message;
            }
            finally
            {
                recLog log = new recLog();
                log.LogEvent = "Delete";
                log.LogMessage = helper.Message;
                log.LogSource = "LevelCompetencyhandler.ashx";
                log.CreatedBy = base.UserLoggedIn;
                log.CreatedDate = DateTime.Now;
                logDal.Save(log);

            }

            return Newtonsoft.Json.JsonConvert.SerializeObject(helper);

        }

        private string GetData(HttpContext context)
        {
            string parameters = Helper.JqGridFilterToSQLParams(context);
            
            //int page = 1;
            //int.TryParse(context.Request.QueryString["page"] ?? "1", out page);

            //int pageSize = 10;
            //int.TryParse(context.Request.QueryString["rows"] ?? "10", out pageSize);

            //string sidx = ((context.Request.QueryString["sidx"]) == null ? LevelCompetency.Fields.ComptID : context.Request.QueryString["sidx"].ToString());

            //string sord = ((context.Request.QueryString["sord"]) == null ? "ASC" : context.Request.QueryString["sord"].ToString());

            //int totalCount = 0;
            //int totalPages = 0;
            //List<LevelCompetency> pagedList = null;

            //try
            //{
            //    totalCount = Convert.ToInt32(LevelCompetencyDal.SelectScalar(SQL.Function.Aggregate.Count, LevelCompetency.Fields.ComptID, parameters));

            //    decimal dc = decimal.Ceiling(Convert.ToDecimal(totalCount) / Convert.ToDecimal(pageSize));
            //    totalPages = Convert.ToInt32(dc);

            //    pagedList = LevelCompetencyDal.GetList(pageSize, page, sidx, sord, parameters);
            //}
            //catch (Exception ex)
            //{
            //    recLog log = new recLog();
            //    log.LogEvent = "GetData";
            //    log.LogMessage = ex.Message;
            //    log.LogSource = "LevelCompetencyhandler.ashx";
            //    log.CreatedBy = base.UserLoggedIn;
            //    log.CreatedDate = DateTime.Now;
            //    logDal.Save(log);
            //    log.Dispose();
            //}
            //finally
            //{

            //}

            //// send params into jqGrid's format
            //var gridData = new
            //{
            //    page = page,
            //    total = totalPages,
            //    records = totalCount,
            //    rows = pagedList,
            //};

            return Newtonsoft.Json.JsonConvert.SerializeObject(parameters);

        }

    }

}